package model;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import javax.xml.bind.annotation.XmlRootElement;


@XmlRootElement
public class Livro {
	private int idLivro;
	private String isbn;
	private String titulo;
	private String obs;
	
	// private String URL = "jdbc:mysql://177.19.155.153:3306/proximob_livros";
	// private String USE = "proximob_livro";
	// private String PASS = "ihNETLtlG2";
	private static String URL = "jdbc:mysql://127.0.0.1:3306/test";
	private static String USE = "root";
	private static String PASS = "cosme";
	
	// getters e setters
	public int getIdLivro() {
		return idLivro;
	}
	public void setIdLivro(int idLivro) {
		this.idLivro = idLivro;
	}
	public String getTitulo() {
		return titulo;
	}
	public String getIsbn() {
		return isbn;
	}
	public void setIsbn(String isbn) {
		this.isbn = isbn;
	}
	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}
	public String getObs() {
		return obs;
	}
	public void setObs(String obs) {
		this.obs = obs;
	}
	
	/* */
	public ArrayList<Livro> getLivroByIsbn(String isbn) {
		Statement st = null;
		ResultSet rs = null;

		String driver = "com.mysql.jdbc.Driver";
		Connection con;
		ArrayList<Livro> lista = new ArrayList<Livro>();
		try {
			Class.forName(driver);
			con = DriverManager.getConnection(URL, USE, PASS);
			st = con.createStatement();

			String sql = "SELECT IDLIVRO AS IDLIVRO, ISBN AS ISBN, TITULO AS TITULO, OBS AS OBS FROM LIVROS WHERE ISBN LIKE '%"
					+ isbn + "%' ORDER BY ISBN";

			st = con.createStatement();
			rs = st.executeQuery(sql);

			while (rs.next()) {
				Livro livro = new Livro();
				livro.setIdLivro(rs.getInt("IDLIVRO"));
				livro.setIsbn(rs.getString("ISBN"));
				livro.setTitulo(rs.getString("TITULO"));
				livro.setObs(rs.getString("OBS"));
				lista.add(livro);
			}
			con.close();

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return lista;
	}

	public ArrayList<Livro> getLivroByTitulo(String titulo) {
		Statement st = null;
		ResultSet rs = null;

		String driver = "com.mysql.jdbc.Driver";
		Connection con;
		ArrayList<Livro> lista = new ArrayList<Livro>();
		try {
			Class.forName(driver);
			con = DriverManager.getConnection(URL, USE, PASS);
			st = con.createStatement();

			String sql = "SELECT IDLIVRO AS IDLIVRO, ISBN AS ISBN, TITULO AS TITULO, OBS AS OBS FROM LIVROS WHERE TITULO LIKE '%"
					+ titulo + "%' ORDER BY TITULO";

			st = con.createStatement();
			rs = st.executeQuery(sql);

			while (rs.next()) {
				Livro livro = new Livro();
				livro.setIdLivro(rs.getInt("IDLIVRO"));
				livro.setIsbn(rs.getString("ISBN"));
				livro.setTitulo(rs.getString("TITULO"));
				livro.setObs(rs.getString("OBS"));
				lista.add(livro);
			}
			con.close();

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return lista;
	}

	public ArrayList<Livro> getLivroByObs(String obs) {
		Statement st = null;
		ResultSet rs = null;

		String driver = "com.mysql.jdbc.Driver";
		Connection con;
		ArrayList<Livro> lista = new ArrayList<Livro>();
		try {
			Class.forName(driver);
			con = DriverManager.getConnection(URL, USE, PASS);
			st = con.createStatement();

			String sql = "SELECT IDLIVRO AS IDLIVRO, ISBN AS ISBN, TITULO AS TITULO, OBS AS OBS FROM LIVROS WHERE TITULO LIKE '%"
					+ obs + "%' ORDER BY OBS";

			st = con.createStatement();
			rs = st.executeQuery(sql);

			while (rs.next()) {
				Livro livro = new Livro();
				livro.setIdLivro(rs.getInt("IDLIVRO"));
				livro.setIsbn(rs.getString("ISBN"));
				livro.setObs(rs.getString("OBS"));
				livro.setTitulo(rs.getString("TITULO"));
				lista.add(livro);
			}
			con.close();

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return lista;
	}

	public ArrayList<Livro> getLivros() {
		Statement st = null;
		ResultSet rs = null;

		String driver = "com.mysql.jdbc.Driver";
		Connection con;
		ArrayList<Livro> lista = new ArrayList<Livro>();
		try {
			Class.forName(driver);
			con = DriverManager.getConnection(URL, USE, PASS);
			st = con.createStatement();

			String sql = "SELECT IDLIVRO AS IDLIVRO, ISBN AS ISBN, TITULO AS TITULO, OBS AS OBS FROM LIVROS";// ORDER BY ISBN";

			st = con.createStatement();
			rs = st.executeQuery(sql);

			while (rs.next()) {
				Livro livro = new Livro();
				livro.setIdLivro(rs.getInt("IDLIVRO"));
				livro.setIsbn(rs.getString("ISBN"));
				livro.setTitulo(rs.getString("TITULO"));
				livro.setObs(rs.getString("OBS"));
				lista.add(livro);
			}
			con.close();

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return lista;
	}

	public boolean excluir(String isbn) {
		String driver = "com.mysql.jdbc.Driver";
		Connection con;

		try {
			Class.forName(driver);
			con = DriverManager.getConnection(URL, USE, PASS);
			Statement stmt = con.createStatement();

			String sql = "DELETE FROM LIVROS WHERE ISBN = '" + isbn + "'";
			stmt.executeUpdate(sql);
			
			con.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		}
		return true;
	}
	
	public boolean inserir(Livro lv) {
		String driver = "com.mysql.jdbc.Driver";
		Connection con;

		try {
			Class.forName(driver);
			con = DriverManager.getConnection(URL, USE, PASS);
			Statement stmt = con.createStatement();

			String sql = "INSERT INTO LIVROS (ISBN, TITULO, OBS) VALUES ('"
					+ lv.getIsbn() + "','" 
					+ lv.getTitulo() + "','"	
					+ lv.getObs() + "')";

			stmt.executeUpdate(sql);
			con.close();

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		}
		return true;
	}

	public boolean atualizar(Livro livro, String cod) {
		String driver = "com.mysql.jdbc.Driver";
		Connection con;

		try {
			Class.forName(driver);
			con = DriverManager.getConnection(URL, USE, PASS);
			Statement stmt = con.createStatement();
			Statement st = null;
			ResultSet rs = null;
			st = con.createStatement();

			String sql = "SELECT IDLIVRO AS IDLIVRO FROM LIVROS WHERE ISBN = '"	+ cod + "'";

			st = con.createStatement();
			rs = st.executeQuery(sql);
			int idLivro = 0;
			while (rs.next()) {
				idLivro = rs.getInt("IDLIVRO");
			}

			sql = "UPDATE LIVROS SET ISBN = '" + livro.getIsbn()+ "' WHERE IDLIVRO = " + idLivro;
			stmt.executeUpdate(sql);

			sql = "UPDATE LIVROS SET OBS = '" + livro.getObs()+ "' WHERE IDLIVRO = " + idLivro;
			stmt.executeUpdate(sql);

			sql = "UPDATE LIVROS SET TITULO = '" + livro.getTitulo()+ "' WHERE IDLIVRO = " + idLivro;
			stmt.executeUpdate(sql);
			
			con.close();

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		}
		return true;
	}
}
